/**
 * 简单的中文转拼音工具
 * 这里使用一个基础的映射表，实际项目中可以考虑使用 pinyin 库
 */

const pinyinMap: Record<string, string> = {
  // 常用汉字拼音映射
  '商': 'shang',
  '品': 'pin',
  '管': 'guan',
  '理': 'li',
  '用': 'yong',
  '户': 'hu',
  '订': 'ding',
  '单': 'dan',
  '支': 'zhi',
  '付': 'fu',
  '分': 'fen',
  '类': 'lei',
  '系': 'xi',
  '统': 'tong',
  '设': 'she',
  '置': 'zhi',
  '权': 'quan',
  '限': 'xian',
  '角': 'jiao',
  '色': 'se',
  '菜': 'cai',
  '首': 'shou',
  '页': 'ye',
  '内': 'nei',
  '容': 'rong',
  '文': 'wen',
  '章': 'zhang',
  '新': 'xin',
  '闻': 'wen',
  '公': 'gong',
  '告': 'gao',
  '通': 'tong',
  '知': 'zhi',
  '活': 'huo',
  '动': 'dong',
  '优': 'you',
  '惠': 'hui',
  '券': 'quan',
  '积': 'ji',
  '会': 'hui',
  '员': 'yuan',
  '等': 'deng',
  '级': 'ji',
  '评': 'ping',
  '价': 'jia',
  '反': 'fan',
  '馈': 'kui',
  '客': 'ke',
  '服': 'fu',
  '帮': 'bang',
  '助': 'zhu',
  '中': 'zhong',
  '心': 'xin',
  '数': 'shu',
  '据': 'ju',
  '计': 'ji',
  '报': 'bao',
  '表': 'biao',
  '日': 'ri',
  '志': 'zhi',
  '监': 'jian',
  '控': 'kong',
  '安': 'an',
  '全': 'quan',
  '备': 'bei',
  '份': 'fen',
  '恢': 'hui',
  '复': 'fu',
  '维': 'wei',
  '护': 'hu',
  '升': 'sheng',
  '配': 'pei',
  '送': 'song',
  '物': 'wu',
  '流': 'liu',
  '仓': 'cang',
  '库': 'ku',
  '存': 'cun',
  '采': 'cai',
  '购': 'gou',
  '供': 'gong',
  '应': 'ying',
  '财': 'cai',
  '务': 'wu',
  '税': 'shui',
  '发': 'fa',
  '票': 'piao',
  '人': 'ren',
  '事': 'shi',
  '资': 'zi',
  '源': 'yuan',
  '薪': 'xin',
  '考': 'kao',
  '勤': 'qin',
  '绩': 'ji',
  '效': 'xiao',
  '培': 'pei',
  '训': 'xun',
  '招': 'zhao',
  '聘': 'pin',
  '项': 'xiang',
  '目': 'mu',
  '任': 'ren',
  '进': 'jin',
  '度': 'du',
  '质': 'zhi',
  '量': 'liang',
  '测': 'ce',
  '试': 'shi',
  '版': 'ban',
  '本': 'ben',
  '布': 'bu',
  '环': 'huan',
  '境': 'jing',
  '部': 'bu',
  '署': 'shu',
  '警': 'jing',
  '邮': 'you',
  '件': 'jian',
  '短': 'duan',
  '信': 'xin',
  '推': 'tui',
  '社': 'she',
  '交': 'jiao',
  '媒': 'mei',
  '体': 'ti',
  '广': 'guang',
  '营': 'ying',
  '销': 'xiao',
  '搜': 'sou',
  '索': 'suo',
  '引': 'yin',
  '擎': 'qing',
  '化': 'hua',
  '移': 'yi',
  '端': 'duan',
  '网': 'wang',
  '站': 'zhan',
  '小': 'xiao',
  '程': 'cheng',
  '序': 'xu',
  '接': 'jie',
  '口': 'kou',
  '档': 'dang',
  '开': 'kai',
  '上': 'shang',
  '线': 'xian',
  '运': 'yun',
  '店': 'dian',
  '铺': 'pu',
  '门': 'men',
  '连': 'lian',
  '锁': 'suo',
  '加': 'jia',
  '盟': 'meng',
  '代': 'dai',
  '经': 'jing',
  '渠': 'qu',
  '道': 'dao',
  '合': 'he',
  '作': 'zuo',
  '伙': 'huo',
  '伴': 'ban',
  '链': 'lian',
  '生': 'sheng',
  '产': 'chan',
  '制': 'zhi',
  '造': 'zao',
  '研': 'yan',
  '创': 'chuang',
  '技': 'ji',
  '术': 'shu',
  '专': 'zhuan',
  '利': 'li',
  '识': 'shi',
  '牌': 'pai',
  '标': 'biao',
  '著': 'zhu',
  '法': 'fa',
  '律': 'lv',
  '规': 'gui',
  '政': 'zheng',
  '策': 'ce',
  '风': 'feng',
  '险': 'xian',
  '审': 'shen',
  '外': 'wai',
  '投': 'tou',
  '融': 'rong',
  '市': 'shi',
  '股': 'gu',
  '债': 'zhai',
  '基': 'ji',
  '金': 'jin',
  '保': 'bao',
  '银': 'yin',
  '行': 'xing',
  '贷': 'dai',
  '结': 'jie',
  '算': 'suan',
  '清': 'qing',
  '对': 'dui',
  '账': 'zhang'
};

/**
 * 将中文转换为拼音
 * @param chinese 中文字符串
 * @returns 拼音字符串
 */
export function toPinyin(chinese: string): string {
  if (!chinese) return '';
  
  let result = '';
  for (const char of chinese) {
    if (pinyinMap[char]) {
      result += pinyinMap[char];
    } else if (/[a-zA-Z0-9]/.test(char)) {
      // 保留英文和数字
      result += char.toLowerCase();
    } else {
      // 对于未映射的字符，使用字符编码作为后备
      result += `char${char.charCodeAt(0)}`;
    }
  }
  
  return result;
}

/**
 * 扩展拼音映射表
 * @param mapping 新的映射关系
 */
export function extendPinyinMap(mapping: Record<string, string>): void {
  Object.assign(pinyinMap, mapping);
}

/**
 * 获取当前拼音映射表
 * @returns 拼音映射表的副本
 */
export function getPinyinMap(): Record<string, string> {
  return { ...pinyinMap };
}
